/******************************************************************************/
/*  Class AUTOMUTEX                                                           */
/*  PO: S. Maslyakov, rusoil.9@gmail.com                                      */
/*                                                                            */
/*  Revision:     1.0                                                         */
/*  Date:         2011/02/14 13:33:33                                         */
/******************************************************************************/


#include "data_types.h"
#include "TNKernel\tn.h"
#include "Auto\automutex.h"



//==============================================================================
// App: Destructor
//==============================================================================
AUTOMUTEX::~AUTOMUTEX() {
    if (m_isMutexLock == TERR_NO_ERR) {
        tn_mutex_unlock((TN_MUTEX *)m_mutex);
    };
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Lock mutex - try
//==============================================================================
sint32_t AUTOMUTEX::Lock() {
    if (m_isMutexLock != TERR_NO_ERR) {
        m_isMutexLock = tn_mutex_lock_polling((TN_MUTEX *)m_mutex);
    };

    return m_isMutexLock;
}
//==============================================================================
//==============================================================================


//==============================================================================
// App: Lock mutex - blocked
//==============================================================================
sint32_t AUTOMUTEX::LockBlock(const uint32_t _tout) {
    if (m_isMutexLock != TERR_NO_ERR) {
        m_isMutexLock = tn_mutex_lock((TN_MUTEX *)m_mutex, _tout);
    };

    return m_isMutexLock;
}
//==============================================================================
//==============================================================================